package gat.api.background.tg;

import com.bitsun.core.common.persistence.Pager;
import com.bitsun.core.common.web.ResultDTO;
import gat.dto.req.tg.AccountDbReqDto;
import gat.dto.req.tg.AccountDbReqParams;
import gat.dto.res.tg.AccountDbResDto;
import io.swagger.annotations.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import java.util.Map;

/**
 * 
 * @Author: yanshukeji-java
 * @Email: yanshukeji-java
 */
@Api(value = "accountDb", description = "账号库接口", tags = {"账号库"})
public interface AccountDbApi {

    /**
     * 创建一个资源对象
     *
     * @return 返回新创建的资源对象
     */
    @ApiOperation(value = "创建一个资源对象（返回新创建的资源对象）", tags = {"账号库"}, nickname = "addAccountDb")
    @ApiResponses(value = {@ApiResponse(code = 200, message = "000000:成功，否则失败")})
    ResultDTO<AccountDbResDto> addAccountDb(AccountDbReqDto reqDto);

    /**
     * 删除单个或一系列资源对象
     *
     * @param ids 用英文逗号隔开
     * @return 返回一个空文档
     */
    @ApiOperation(value = "删除单个或一系列资源对象", tags = {"账号库",}, nickname = "deleteAccountDb")
    @ApiResponses(value = {@ApiResponse(code = 200, message = "操作是否成功,000000:成功，否则失败")})
    ResultDTO<Void> deleteAccountDb(String ids);

    /**
     * 查询一个资源对象
     *
     * @return 返回单独的资源对象
     */
    @ApiOperation(value = "查询一个资源对象", tags = {"账号库"}, nickname = "getOneAccountDb")
    @ApiResponses(value = {@ApiResponse(code = 200, message = "操作是否成功,000000:成功，否则失败")})
    ResultDTO<AccountDbResDto> getOneAccountDb(Long id);


    /**
     * 更新一个资源对象(部分更新)
     *
     * @return 返回完整的资源对象
     */
    @ApiOperation(value = "更新一个资源对象(部分更新,更新对象里有值的属性,空值不更新)", tags = {"账号库"}, nickname = "patchUpdateAccountDb")
    @ApiResponses(value = {@ApiResponse(code = 200, message = "操作是否成功,000000:成功，否则失败")})
    ResultDTO<AccountDbResDto> patchUpdateAccountDb(Long id, AccountDbReqDto reqDto);


    /**
     * 账号库列表
     *
     * @param params 参数params
     * @return 返回一系列资源对象
     */
    @ApiOperation(value = "账号库列表", tags = {"账号库",}, nickname = "queryAccountDb")
    @ApiResponses(value = {@ApiResponse(code = 200, message = "操作是否成功,000000:成功，否则失败")})
    ResultDTO<Pager<AccountDbResDto>> queryAccountDb( AccountDbReqParams params);

    /**
     * 导入账号
     *
     * @param params 参数params
     * @return 返回一系列资源对象
     */
    @ApiOperation(value = "导入账号", tags = {"账号库",}, nickname = "importAccount")
    @ApiResponses(value = {@ApiResponse(code = 200, message = "操作是否成功,000000:成功，否则失败")})
    ResultDTO<Void> importAccount(MultipartFile file);

}
